﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using FacturacionII.Modelo;
using FacturacionII.Interfaces;
namespace FacturacionII.Clases
{
    class clsProducto
    {
        facturacionEntities objFactuacionEntidades;
        public clsProducto() { }


        public ArrayList CargarDatosGridView()
        {
            ArrayList lista = new ArrayList();
            objFactuacionEntidades = new facturacionEntities();
            var query = from p in objFactuacionEntidades.producto
                        join f in objFactuacionEntidades.familia on p.id_categoria equals f.id
                        orderby p.descripcion ascending
                        select new
                        {
                            CODIGO = p.id,
                            DESCRIPCION = p.descripcion,
                            IDFAMILIA = p.id_categoria,
                            FAMILIA = f.descripcion,
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }
            return lista;
        }

        public ArrayList BuscarDatosGridView(string producto)
        {
            ArrayList lista = new ArrayList();
            objFactuacionEntidades = new facturacionEntities();
            var query = from p in objFactuacionEntidades.producto
                        join f in objFactuacionEntidades.familia on p.id_categoria equals f.id
                        where p.descripcion.Contains(producto)
                        select new
                        {
                            CODIGO = p.id,
                            DESCRIPCION = p.descripcion,
                            IDFAMILIA = p.id_categoria,
                            FAMILIA = f.descripcion,
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }
            return lista;
        }

        public void Guardar(string descripcion, int codigoFamilia, int usuario)
        {
            objFactuacionEntidades = new facturacionEntities();
            producto producto = new producto
            {
                descripcion = descripcion,
                id_categoria = codigoFamilia,
                id_usuario = usuario,
                fecha_registro = DateTime.Now
            };

            objFactuacionEntidades.AddToproducto(producto);
            objFactuacionEntidades.SaveChanges();
        }

        public void GuardarCambios(int id, string descripcion, int codigoFamilia, int usuario)
        {
            objFactuacionEntidades = new facturacionEntities();
            producto producto = objFactuacionEntidades.producto.FirstOrDefault(
                a => a.id == id);
            producto.descripcion = descripcion;
            producto.id_categoria = codigoFamilia;
            producto.id_usuario = usuario;
            objFactuacionEntidades.SaveChanges();
        }

        public void Eliminar(int id)
        {
            objFactuacionEntidades = new facturacionEntities();
            producto producto = objFactuacionEntidades.producto.FirstOrDefault(
                a => a.id == id);
            objFactuacionEntidades.SaveChanges();
        }

        public ArrayList CargarComboBox()
        {
            ArrayList lista = new ArrayList();
            objFactuacionEntidades = new facturacionEntities();
            var query = from p in objFactuacionEntidades.producto
                        orderby p.descripcion
                        select new
                        {
                            CODIGO = p.id,
                            DESCRIPCION = p.descripcion,
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }
            return lista;
        }
    }
}
